/**
* \file Combinaison.h
* \brief Comprend la définition de la strucure Combinaison et les entêtes des fonctions et procédures
*/

#ifndef COMBINAISON_H_INCLUDED
#define COMBINAISON_H_INCLUDED

#include <stdio.h>
#include <stdlib.h>

#include "Parametres.h"

#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>

/**
* \struct Combinaison
* \brief Définition de la strucure Combinaison
* \details Une combinaison est un pointeur sur un tableau d'entiers de dimension taille.
*
* \param tab  pointeur sur un tableau d'entiers
*/

typedef struct {
    int* tab;
    int taille;
} Combinaison;


void initCombinaison(Combinaison* comb, Parametres param);

void libereCombinaison(Combinaison* comb);

int longueurEntier (int nb);

void saisieCombinaison(Combinaison* comb, Parametres param);
void saisieCombinaisonSecreteTexte(Combinaison* comb, Parametres param);
void saisieCombinaisonBis(Combinaison* comb, Parametres param, int combTest);

int pionsBienPlaces(Combinaison* comb1, Combinaison* comb2);

int pionsBonneCouleurBis(Combinaison* comb1, Combinaison* comb2);
int pionsBonneCouleur(Combinaison* comb1, Combinaison* comb2, Parametres param);

void generationAleatoireCombinaisonSecreteTexte(Combinaison* combinaisonSecrete, Parametres param);
void generationAleatoireCombinaisonSecreteSDL(Combinaison* combinaisonSecrete, Parametres param);

int parametresRespectes(int combTest, Parametres param);

Combinaison saisieCombinaisonSDL(Parametres param, SDL_Surface *screen, int* notechap, int x, int y);
void afficheCombinaison(Parametres param, SDL_Surface *screen, int* comb, int x, int y);


#endif
